package com.example.demo.java8;

import java.util.concurrent.ForkJoinPool;
import java.util.stream.LongStream;

/**
 * @ClassName JoinTest
 * @Description TODO
 * @Author hly
 * @Date 2018\11\29 0029 14:39
 */
public class JoinTest {

    public void test01(){
//        // 获取任务的开始时间
//        long millis = System.currentTimeMillis();
//
//        ForkJoinPool pool = new ForkJoinPool();
//        ForkJoinCommon forkJoinCommon = new ForkJoinCommon(0L, 10000000000L);
//
//        //  执行任务
//        Long result = pool.invoke(forkJoinCommon);
//        System.out.println(result);
//
//        //获取任务的结束时间
//        long millis2 = System.currentTimeMillis();
//        // 21444
//        System.out.println("使用 Fork/Join框架计算总共用时："+(millis2-millis));
    }

    public void test02(){
        // 获取任务的开始时间
        long millis = System.currentTimeMillis();

        int num=0;
        for (int i = 0; i < 1000000000L; i++) {
            num+=i;
        }

        // 获取任务的结束时间
        long millis2 = System.currentTimeMillis();
        System.out.println(num);
        System.out.println("使用传统方式计算共用时："+(millis2-millis));
    }

    public void test03(){
        // 获取任务的开始时间
        long millis = System.currentTimeMillis();

        long sum = LongStream.rangeClosed(0L, 1000000000L)
                .parallel()
                .sum();
        // 获取任务的结束时间
        long millis2 = System.currentTimeMillis();
        System.out.println(sum);
        // 84844
        System.out.println("使用Java8并行流方式计算共用时："+(millis2-millis));
    }

    public static void main(String[] args) {
        JoinTest test = new JoinTest();
        test.test02();
        test.test03();
    }

}
